package com.yonyou.component;

import com.intellij.notification.NotificationType;

import com.intellij.openapi.components.BaseComponent;
import com.yonyou.ctm.ctmplugin.utils.NotificationUtil;
import org.jetbrains.annotations.NotNull;

/**
 * 插件组件是插件集成的基础概念，我们插件定义的每一个组件(component) 应该在配置文件中配置相关的接口(可选)和实现类。有三种组件：
 *
 * Application Component IDEA启动时会初始化，IDEA生命周期中仅存在一个实例。
 * Project Component IDEA 会为每一个 Project 实例创建一个 Project 级别的component
 * Module Component IDEA 会为每一个 Project的加载过的Module实例Module级别的component
 * @author fengjiening
 * @since 2023-02-28
 */
public class SparrowApplication implements BaseComponent {
    public SparrowApplication() {
    }
    public void initComponent() {
        // TODO: idea打开的时候调用
        testMesg();
        initMyComponent();
    }

    /**
     *这里可以做自己组件启动事情,
     */
    private void initMyComponent() {

    }
    /**
     *这里可以做自己组件启动事情,
     *  SparrowApplication app = ApplicationManager.getApplication().getComponent(SparrowApplication.class);
     *  app.testMesg()  可以直接调用的方法
     */
    public void testMesg() {
        NotificationUtil.showNotification(NotificationType.ERROR,"SparrowApplication.initComponent");
    }

    public void disposeComponent() {
        // TODO: insert component disposal logic here
        NotificationUtil.showNotification(NotificationType.WARNING,"SparrowApplication.disposeComponent");
    }
    @NotNull
    public String getComponentName() {
        return "SparrowApplication";
    }
}

